prevod c++ do delphi
Otázka od: Matejcek Petr
22. 4. 2004 14:55
DD,
snazim se prevest z c++ do delphi hlavicku sick.h a nevim si rady
jak do *.pas dostat toto:
#define UNIVERSE_FIFO_WAIT \
do { \
} while ((*sicl_universe_misc_stat & 0x00040000L) == 0)
#define ibpeek(addr) *((unsigned volatile char *)(addr))
pro jistotu se jeste zeptam nemate nekdo uz hotovy sicl.pas pro
komunikaci s kartou HPIB hledal jsem na webu ale marne
diky PM
Odpovedá: Dalibor Toman
22. 4. 2004 16:54
On Thursday, April 22, 2004 3:32 PM [CET], Matejcek Petr
<konference@crhov.komfi.cz> wrote:
> DD,
>
> snazim se prevest z c++ do delphi hlavicku sick.h a nevim si
rady
> jak do *.pas dostat toto:
>
> #define UNIVERSE_FIFO_WAIT \
> do { \
> } while ((*sicl_universe_misc_stat & 0x00040000L) == 0)
je to jen obycejne makro. Podle mne by melo vsechny vyskyty
UNIVERSE_FIFO_WAIT nahradit cyklem:
do { } while ((*sicl_universe_misc_stat & 0x00040000L) == 0)
cili si to v pascalu musis prepsat obdobne. sicl_universe_misc_stat
bude zrejme nejaka funkce nebo globalni promenna nastavovana necim
asynchronnim.
>
> #define ibpeek(addr) *((unsigned volatile char *)(addr))
>
tohle by snad melo byt jen nejake zbesile pretypovani (pretypovani mi
nevadi ale jejich zapis v CCku primo 'miluju'). Mohlo by to slouzit ke
cteni pameti z adresy zadane v addr. Tech hvezdicek a zavorek je tam
na muj vkus nejak moc. Konkretni vyklad te definice bych radsi
odhadoval se znalosti dalsiho kontextu . Zrejme ale v addr je
adresa, kterou pretypuji na unsigned char (proc je ta volatile
netusim, vyznam by snad menit nemelo). No a ta hvezdicka uplne vlevo z
toho dela pointer na pointer, ale proc se to pred ni (resp za ni)
pretypovava na ten char netusim.
muj hruby odhad je :
Byte(Pointer(Pointer(addr)^)^)
samozrejme jde to napsat i lip..
> pro jistotu se jeste zeptam nemate nekdo uz hotovy sicl.pas pro
> komunikaci s kartou HPIB hledal jsem na webu ale marne
s HPIB jsem prisel sice kdysi do styku (karta od Hewlet-Packard). Ke
karte byla pascalska unita, ale z HPIB komunikace jsem byl tezce
zklamany. To co fungovat melo, nefungovalo, komunikace byla strasne
pomala (mam na mysli reakcni dobu (dotaz/odpoved)). Vzhledem k tomu,
ze asynchronni veci nefungovaly (nebo je HPIB neumi? ) a ten program
cetl z mnoha cidel i mimo HPIB tak to byl docela velkej hack, ze to
nakonec chodilo. Do dneska netusim, zda na vine byla ta karta nebo
zarizeni k ni pripojene (nejakej merak od Rohde&Schwarz nebo jak se
tam firma jmenuje). Komponenty za priserny penize a obycejna seriovka
byla proti tomu zlata.
D. Toman
Odpovedá: Slavomir Skopalik
22. 4. 2004 17:13
Neco jako
while(sicl_universe_misc_stat^ and $00040000)=0 do;
Slavek
>
> DD,
>
> snazim se prevest z c++ do delphi hlavicku sick.h a
> nevim si rady
> jak do *.pas dostat toto:
>
> #define UNIVERSE_FIFO_WAIT \
> do { \
> } while ((*sicl_universe_misc_stat & 0x00040000L) == 0)
>
Odpovedá: Blazek Jaroslav
22. 4. 2004 18:12
Ahoj,
> konference@crhov.komfi.cz 22.4.2004 15:32:45 >>>
> snazim se prevest z c++ do delphi hlavicku sick.h a nevim si rady
>jak do *.pas dostat toto:
>#define UNIVERSE_FIFO_WAIT \
> do { \
> } while ((*sicl_universe_misc_stat & 0x00040000L) == 0)
toto je makro, takze vsude v kodu, kde je UNIVERSE_FIFO_WAIT musis
prepsat na
while (sicl_universe_misc_stat^ and $00040000) = 0 do
;
nebo si udalat fci...
>#define ibpeek(addr) *((unsigned volatile char *)(addr))
type PByte = ^byte;
var b : byte;
b := PByte(addr)^;
nevim, ale jak v Delphi nahradit modifikator "volatile", mozna vi nekdo
jiny...
- rika kompilatoru....promenna, ktera je definovana jako volatile, muze
byt modifikovana nejakou nespecifikovanou asynchronni udalosti
S pozdravem
Bc. Jaroslav Blazek
Access-IT Ceska Lipa
mailto:jaroslav.blazek@access-it.cz
http://www.access-it.cz
ICQ# : 133673990
+420605/813644